package demo1;

import java.util.Stack;

class MyQueue {
    private Stack<Integer> stack1; // 用于入队操作
    private Stack<Integer> stack2; // 用于出队操作

    public MyQueue() {
        stack1 = new Stack<>();
        stack2 = new Stack<>();
    }

    // 直接将元素压入stack1
    public void push(int x) {
        stack1.push(x);
    }

    // 将stack1中的元素转移到stack2，反转顺序
    private void transferElements() {
        if (stack2.isEmpty()) {
            while (!stack1.isEmpty()) {
                stack2.push(stack1.pop());
            }
        }
    }

    // 移除并返回队列的头部元素
    public int pop() {
        transferElements();
        return stack2.pop();
    }

    // 返回队列的头部元素，但不移除
    public int peek() {
        transferElements();
        return stack2.peek();
    }

    // 判断队列是否为空
    public boolean empty() {
        return stack1.isEmpty() && stack2.isEmpty();
    }
}
